/*
 * Licensed to the 南京汇海交通科技有限公司
 *
 * Copyright (c) 2025.
 * All rights reserved.
 *
 * 本软件属南京汇海交通科技有限公司所有，在未获得南京汇海交通科技有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.cje.basic.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.chframework.boot.core.response.result.ApiResult;
import com.cje.basic.openfeign.fallbackfactory.DictServiceFallbackFactory;
import com.cje.basic.pojo.bo.DictDataBO;
import com.cje.basic.pojo.bo.DictTypeBO;
import com.cje.basic.pojo.dto.DictDataPageDTO;
import com.cje.basic.pojo.dto.DictTypeDTO;
import com.cje.basic.pojo.dto.DictTypePageDTO;
import com.github.pagehelper.PageInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;

@FeignClient(value = "cje-basic-service",
        path = "/service/basic",
        contextId = "dictServiceContext",
        fallbackFactory = DictServiceFallbackFactory.class
)
public interface DictService {

    /**
     * 分页查询字典类型列表
     */
    @ResponseBody
    @PostMapping(value = "/pageDictType")
    ApiResult<IPage<DictTypeBO>> pageDictType(@RequestBody DictTypePageDTO dictTypePageDTO);

    /**
     * 分页查询字典数据列表
     */
    @ResponseBody
    @PostMapping(value = "/pageDictData")
    ApiResult<PageInfo<DictDataBO>> pageDictData(@RequestBody DictDataPageDTO dictDataPageDTO);

    /**
     * 查询指定字典类型的字典数据
     */
    @ResponseBody
    @GetMapping(value = "/getDictType")
    ApiResult<DictTypeBO> getDictType(DictTypeBO dictTypeBO);

    /**
     * 新增字典数据
     */
    @ResponseBody
    @PostMapping(value = "postDictData")
    ApiResult<Boolean> postDictData(@RequestBody DictTypeDTO dictTypeDTO);

    /**
     * 删除字典数据
     */
    @ResponseBody
    @PostMapping(value = "deleteDictType")
    ApiResult<Boolean> deleteDictType(@RequestBody DictTypeDTO dictTypeDTO);

    /**
     * 修改字典类型
     */
    @ResponseBody
    @PostMapping(value = "putDictType")
    ApiResult<Boolean> putDictType(@RequestBody DictTypeBO dictTypeBO);

    /**
     * 修改字典数据
     */
    @ResponseBody
    @PostMapping(value = "putDictData")
    ApiResult<Boolean> putDictData(@RequestBody DictDataBO dictDataBO);

}
